bfc542961446b8de587de32fd88de902123614d1,sonar-server/src/main/java/org/sonar/server/rule/RegisterRules.java,RegisterRules,mergeParams,#RulesDefinition.Rule#RuleDto#DbSession#,291
Before Change
private void mergeParams(RulesDefinition.Rule ruleDef, RuleDto rule, DbSession session) {
List<RuleParamDto> paramDtos = dbClient.ruleDao().findRuleParamsByRuleKey(session, rule.getKey());
List<String> existingParamDtoNames = new ArrayList<String>();
for (RuleParamDto paramDto : paramDtos) {
RulesDefinition.Param paramDef = ruleDef.param(paramDto.getName());
if (paramDef == null) {
// TODO cascade on the activeRule upon RuleDeletion
dbClient.ruleDao().removeRuleParam(session, rule, paramDto);
} else {
// TODO validate that existing active rules still match constraints
// TODO store param name
if (mergeParam(paramDto, paramDef)) {
dbClient.ruleDao().updateRuleParam(session, rule, paramDto);
}
existingParamDtoNames.add(paramDto.getName());
}
}
for (RulesDefinition.Param param : ruleDef.params()) {
if (!existingParamDtoNames.contains(param.key())) {
RuleParamDto paramDto = RuleParamDto.createFor(rule)
.setName(param.key())
.setDescription(param.description())
After Change
// Create newly parameters
for (RulesDefinition.Param param : ruleDef.params()) {
RuleParamDto paramDto = existingParamsByName.get(param.key());
if (paramDto == null) {
paramDto = RuleParamDto.createFor(rule)
.setName(param.key())
.setDescription(param.description())